package cc.jq1024.types.annotations;

import java.lang.annotation.*;
import java.util.concurrent.TimeUnit;


@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RateLimiterAccessInterceptor {

    // 基于某个字段进行限流(可以从入参取到)？ or 其他，all就是不拦截
    String key() default "all";

    // 限制频次(10次/分？)
    double permitsPerSecond() default 10.0;

    // 几次之后进行黑名单处理
    double blacklistCount() default 1.0;

    // 拦截后的方法 -》 给用户展示什么页面等
    String fallbackMethod();

    // 黑名单过期时间
    long timeDuration() default 24;

    // 时间单位
    TimeUnit timeUnit() default TimeUnit.HOURS;
}
